package com.itjin.health.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.itjin.health.domain.dto.FeedbackAddRequest;
import com.itjin.health.domain.dto.FeedbackQueryRequest;
import com.itjin.health.domain.dto.FeedbackUpdateRequest;
import com.itjin.health.domain.entity.UserFeedback;
import com.itjin.health.domain.vo.FeedbackVO;

/**
 * 用户反馈服务
 */
public interface UserFeedbackService extends IService<UserFeedback> {

  /**
   * 添加反馈
   *
   * @param addRequest 添加请求
   * @param userId     用户ID
   * @return 反馈ID
   */
  Integer addFeedback(FeedbackAddRequest addRequest, Integer userId);

  /**
   * 删除反馈
   *
   * @param id     反馈ID
   * @param userId 用户ID
   * @return 是否成功
   */
  boolean deleteFeedback(Integer id, Integer userId);

  /**
   * 更新反馈
   *
   * @param updateRequest 更新请求
   * @param userId        用户ID
   * @return 是否成功
   */
  boolean updateFeedback(FeedbackUpdateRequest updateRequest, Integer userId);

  /**
   * 根据ID获取反馈
   *
   * @param id 反馈ID
   * @return 反馈视图对象
   */
  FeedbackVO getFeedbackById(Integer id);

  /**
   * 分页获取当前用户的反馈列表
   *
   * @param queryRequest 查询请求
   * @param userId       用户ID
   * @return 反馈列表分页结果
   */
  Page<FeedbackVO> listUserFeedbacks(FeedbackQueryRequest queryRequest, Integer userId);

  /**
   * 分页获取所有反馈（管理员使用）
   *
   * @param queryRequest 查询请求
   * @return 反馈列表分页结果
   */
  Page<FeedbackVO> listAllFeedbacks(FeedbackQueryRequest queryRequest);
}